Déployer Jupyterhub et jupyter notebook en Intranet et en extranet

Déploiement de la partie "Jupyter/Jupyterhub" du Projet Tremplin et accompagnement de l'enseignement de la programmation.

Positionnement de départ :

L'année 2017-2018 est marquée par l'entrée dans les programmes de Seconde au Lycée de l'enseignement de la programmation. Le langage adopté par notre Académie est Python3.

Nous avons jusqu'à présent utilisé comme outil "IDLE" en local sur les machines de l'établissement. L'équipe des enseignants de mathématiques est confrontée à trois nécessités :

1. Disposer sur le parc mixte de notre établissement d'un IDE
2. Disposer d'une solution serveur pour que les élèves n'aient pas à faire d'installation sur leurs machines personnelles.
3. Disposer d'un accès au server depuis le domicile des enseignants et des élèves tout en en disposant dans l'établissement.

Le déploiement des RAPSPI3 en ISN à l'aide de l'image fournie par l'IFE-ENS-De-Lyon m'a permis de maitriser le binome d'IDE Jupyter/jupyterhub. La contrainte d'utilisation de tkinter et de turtle impose de disposer de jupyter notebook en local. La solution serveur quant à elle dispose de matplotlib pour l'affichage des données scientifiques.

J'ai donc décidé de proposer une installation sur les machines MacOS Yosemite de notre établissement juptyter notebook auquel j'ai ajouté l'extension "nbpresent" pour que les eleves présentant des projets au Bac ISN disposent d'un outil de présentation directement intégré à l'IDE. L'ensemble des ressources TeX ont été ajoutées pour que l'exportation en pdf soit possible. Le markdown ou l'intégration de code html seront des passerelles vers la publication XML liée au projet Tremplin.

Pour le serveur la solution retenu en intranet est une machine sur laquelle réside une Debian Stretch l'installation de jupyter notebook et de jupyterhub sont réalisées grâce aux indications du Blog de Gérard vidal.

Installer les outils Jupyter/Jupyterhub sur RASPI3 Stretch

Une difficulté technique liée au VPN et aux installalations de Windows sur les machines de mes collègues m'a contraint à installer sur une machine MacOS X Yosemite le même système pour que l'approriation de l'outil et la production de cahier de programmes puisse commencer avant la rentrée.

Enfin une solution de mutualisation des contenus produits par les collègues est envisagée :

  1. Sur l'ENT Lea.normandie.fr produit par Pentila et hébergé sur les serveurs de la Région Normandie.
  2. Sur un serveur git hébergé par l'ENS-de-Lyon sur le modèle de ce dépôt CahierDeProgrammes

Mise en place sur le serveur STRETCH de jupyterhub

L'installation de la dernière version Stretch de Debian précède l'application stricte du tutoriel de Gérard vidal.

Cette solution est à retenir car elle présente l'intérêt de pouvoir être mise en place sur des machines anciennes de l'établissement. Elle est aussi très bien documentée.

La mise en place en https de la connexion sur le serveur est à suivre absolument. Le certificat autosigné doit être accepté par l'utilisatieur, mais c'est un petit inconvénient que est vite assimilé par les élèves.

L'accès depuis l'extérieur de l'établissement peut être réalisé grâce à un VPN mais la solution la plus élégante serait de placer la machine qui héberge de le serveur jupyterhub dans la DMZ de l'établissement.

Mise en place des outils sur les iMac et les Macbook :

La mise en place sur des machines de générations différentes m'a contraint à créer une image puis à la répliquer sur tous les postes. J'ai utilisé pour ce faire les trois tutoriels dont les liens suivent :

  1. réglage du mac pour installer homebrew Ce tutoriel fonctionne aussi sur Yosemite.
  2. installation de python et python3 et de quelques outils supplémentaires Ce tutoriel a été suivi en installant python et python3 avec l'option --with-tcl-tk pour disposer de tkinter.
  3. installation de jupyter et jupyterhub Le tutotiel pour les Raspi Tremplin

Sur MacOS et en utilisant brew il n'est pas nécessaire d'utiliser la commande "sudo"

Les outils node, wine et ffmpeg ont été installés. Le premier est nécessaire les deux autres sont simplement des outils qui sont utiles en classe pour faire tourner des applications spécifiques Windows et pour traiter les videos aux formats exotiques que les élèves peuvent nous apporter en TPE.

Pour l'installation de jupyterhub sur MacOS j'ai aussi utilisé ce tutoriel :

Utiliser jupyterhub en https avec sudo sans privilèges root qui vient en complément du blog de Gérard Vidal.

L'installation du kernel javascript a été réalisée en suivant utilisant npm :

npm install -g ijavascript

puis en lançant

ijs

Enfin j'ai ajouté nbpresent pour que les élèves disposent d'un mode présentation intégré à jupyter ou jupyter notebook

pip install nbpresent
pip3 install nbpresent

Pour que cette possibilité soit présente sur toutes les sessions des élèves l'utilitaire Automator m'a permis de faire un script qui exécute pour l'élève le lancement de jupyter notebook avec les extensions actives.

on run {input, parameters}  
    tell application "Terminal"     
        activate        
        do script with command "jupyter serverextension enable nbpresent --py ; jupyter nbextension enable nbpresent --py ; jupyter notebook"
    end tell    
    return input    
end run

Mutualisation des cahiers de programmes

Cette étape est complémentaire de la démarche d'installation de l'IDE. Dans l'absolu on peut imaginer qu'un élève dispose dans le dépôt de tous les Cahiers produits par ses enseignants, et même des cahiers rédigés par des élèves et validés par l'équipe qui les accompagne dans leur démarche de projet.

Pour l'instant le dépôt qui existe et celui de Tremplin. Il peut être cloné à partir de ce lien. dépôt Tremplin